package com.zbkj.crmeb.chant.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.zbkj.crmeb.chant.dto.CategoryMatchDTO;
import com.zbkj.crmeb.chant.model.CategoryMatch;
import com.zbkj.crmeb.chant.vo.CategoryMatchRequest;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * 商品类目对应天猫对照表
 * @Description: 
 * @author daigb
 * @date 2021-02-03
 */
public interface ICategoryMatchService extends IService<CategoryMatch> {
    
    /**
     * 分页查询
     * @Description:  
     * @author daigb 
     * @param @param request
     * @param @return
     * @return PageInfo<CategoryMatchResponse>
     * @throws
     */
    PageInfo<CategoryMatch> pageEntity(CategoryMatchRequest request);
    
    /**
     * 通过主键查询
     * @Description:  
     * @author daigb 
     * @param @param id
     * @param @return
     * @return CategoryMatchResponse
     * @throws
     */
    CategoryMatch getEntity(Integer id);
    
    /**
     * 保存
     * @Description:  
     * @author daigb 
     * @param @param dto
     * @param @return
     * @return Boolean
     * @throws
     */
    Boolean saveEntity(CategoryMatchDTO dto);
    
    /**
     * 修改
     * @Description:  
     * @author daigb 
     * @param @param dto
     * @param @return
     * @return Boolean
     * @throws
     */
    Boolean updateEntity(CategoryMatchDTO dto);

    /**
     * 删除分类
     * @param id
     * @return
     */
    Object del(Integer id);

    /**
     * 获取分类下子类
     * @param id
     * @return
     */
    List<CategoryMatch> getChildVoListByPid(Integer id);

    /**
     * 通过id集合获得列表
     * @param cateIdList
     * @return
     */
    List<CategoryMatch> getByIds(List<Integer> cateIdList);

    /**
     * 获取分类下三级子类
     * @param id
     * @return
     */
    List<CategoryMatch> getThreeChildVoListByPid(Integer id);

    /**
     * 获取商户可见分类
     */
    List<CategoryMatch> getCategoryMatch(Integer merId, Integer... cateId);
    
    List<Integer> getCategoryMatchIds(Integer merId);
    
    /**
     * 获取商户不可见分类(包括总分类和商户分类)
     */
    List<CategoryMatch> selectCategoryMatchDisable(Integer merId);

    Map<Integer, String> getTripletCateName(List<Integer> cateIds);

}
